/**
 * 比较两个时间的大小
 *
 * @param timeArray 包含两个时间字符串的数组，每个时间字符串格式为 'HH:MM:SS'
 * @returns 如果第二个时间大于第一个时间，则返回true；否则返回false
 */
export function compareTimes(timeArray: [string, string]) {
  const [time1, time2] = timeArray;

  // 检查输入是否为有效的时间字符串
  if (!isValidTime(time1) || !isValidTime(time2)) {
    return false;
  }

  /**
   * 将时间字符串转化为秒数
   *
   * @param time 时间字符串，格式为 'HH:MM:SS'
   * @returns 时间对应的秒数
   */
  const timeToSeconds = (time: string) => {
    const [hours, minutes, seconds] = time.split(':').map(Number);
    return hours * 3600 + minutes * 60 + seconds;
  };

  // 获取第一个和第二个时间的秒数
  const time1InSeconds = timeToSeconds(time1);
  const time2InSeconds = timeToSeconds(time2);

  // 直接返回比较结果
  return time2InSeconds >= time1InSeconds;
}

/**
 * 验证时间字符串是否有效
 *
 * @param time 时间字符串，格式为 'HH:MM:SS'
 * @returns 是否为有效的时间字符串
 */
function isValidTime(time: string): boolean {
  if (typeof time !== 'string' || !/^\d{2}:\d{2}:\d{2}$/.test(time)) {
    return false;
  }
  const [hours, minutes, seconds] = time.split(':').map(Number);
  return hours >= 0 && hours < 24 && minutes >= 0 && minutes < 60 && seconds >= 0 && seconds < 60;
}
